[IA64] fix a bug in vmx_send_assist_req()
authorawilliam@xenbuild.aw <awilliam@xenbuild.aw>
Wed, 22 Nov 2006 17:13:31 +0000 (10:13 -0700)
committerawilliam@xenbuild.aw <awilliam@xenbuild.aw>
Wed, 22 Nov 2006 17:13:31 +0000 (10:13 -0700)
We must do_softirq() explicitly to enter scheduler

If not, booting a windows guest and a linux guest at the same time
will lead to a system hang.

Signed-off-by: Zhang Xin <xing.z.zhang@intel.com>
xen/arch/ia64/vmx/vmx_support.c

index ea7e24afe88f7c972e8f8f9782f48ac224b89fdb..667d983857057cdb13140aa28593b0ca0bfad05b 100644 (file)
@@ -76,11 +76,6 @@ void vmx_send_assist_req(struct vcpu *v)
     p->state = STATE_IOREQ_READY;
     notify_via_xen_event_channel(v->arch.arch_vmx.xen_port);
 
-    /*
-     * Waiting for MMIO completion
-     *   like the wait_on_xen_event_channel() macro like...
-     *   but, we can't call do_softirq() at this point..
-     */
     for (;;) {
         if (p->state != STATE_IOREQ_READY &&
             p->state != STATE_IOREQ_INPROCESS)
@@ -96,6 +91,7 @@ void vmx_send_assist_req(struct vcpu *v)
         }
 
         raise_softirq(SCHEDULE_SOFTIRQ);
+        do_softirq();
         mb();
     }